// 注意：如果需要将时间戳1738913590000转为2024/11/25 09:57:02，就先将时间戳转为2024-11-25T01:57:02.000Z格式，再进行格式化
// 例如：formattedTime(new Date(item.gmtModified))
// 注意：vue2可能不能直接在HTML里面使用导入的formattedTime(),需要将导入的formattedTime二次封装到methods里面
// import { formattedTime } from '@/utils/formattedTime.js'
// formattedTime(time) {
//     return formattedTime(new Date(time))
// },
// <div>失效时间：{{ formattedTime(item.gmtModified) }}</div>

//1.传入标准时间2024-11-25T01:57:02.000Z
export const formattedTime = (isoTime) => { //转换之前 2024-11-25T01:57:02.000Z
    return new Intl.DateTimeFormat('zh-CN', {
        year: 'numeric',
        month: '2-digit',
        day: '2-digit',
        hour: '2-digit',
        minute: '2-digit',
        second: '2-digit',
        timeZone: 'Asia/Shanghai'
    }).format(new Date(isoTime));  //转换之后 2024/11/25 09:57:02
}

// 2.传入时间戳
export const formattedTime2 = (timestamp) => {
    let time = new Date(timestamp);
    console.log('时间戳new Date后：', time);  // Wed Mar 12 2025 18:04:00 GMT+0800 (中国标准时间)

    // 根据时间戳创建的 Date 对象
    let year = time.getFullYear();
    let month = time.getMonth() + 1;  // 月份从 0 开始，所以要加 1
    let day = time.getDate();
    let hour = time.getHours();
    let minute = time.getMinutes();
    let second = time.getSeconds();

    // 格式化一位数的情况，使用 padStart 来确保每个数值至少两位
    month = month.toString().padStart(2, '0');
    day = day.toString().padStart(2, '0');
    hour = hour.toString().padStart(2, '0');
    minute = minute.toString().padStart(2, '0');
    second = second.toString().padStart(2, '0');

    // 拼接格式化后的时间
    let formattedTime = `${year}-${month}-${day} ${hour}:${minute}:${second}`;
    console.log('现在时间为:', formattedTime);  // 2024-02-27 10:12:17
    return formattedTime;
};
// 使用方法：
// import { formattedTime, formattedTime2 } from "@/utils/formattedTime.js";
// methods: {
//     formattedTime(time) {
//         return formattedTime(new Date(time))
//     },
//     formattedTime2(timestamp) {
//         return formattedTime2(timestamp)
//     },
// }
// <div>{{ formattedTime2(item.gmtModified) }}</div>


// 3.传入时间戳，时间格式化formatedTime3
export const formatedTime3 = (time, option) => {
    time = time * 1000
    const d = new Date(time)
    const now = Date.now()
    const diff = (now - d) / 1000

    if (diff < 30) {
        return '刚刚'
    } else if (diff < 3600) {
        return Math.floor(diff / 60) + '分钟前'
    } else if (diff < 3600 * 24) {
        return Math.floor(diff / 3600) + '小时前'
    } else if (diff < 3600 * 24 * 2) {
        return '昨天'
    }

    if (option) {
        return parseTime(time, option)
    } else {
        return (
            d.getMonth() + 1 + '月' +
            d.getDate() + '日' +
            d.getHours().toString().padStart(2, '0') + '时' +
            d.getMinutes().toString().padStart(2, '0') + '分'
        )
    }
}
// 使用方法：
// 例如输出：刚刚 / 10分钟前 / 6月30日19时20分
// formatedTime3(1722002451)
// 如果定义了 parseTime 方法，会按指定格式输出
// formatedTime3(1722002451, '{y}-{m}-{d} {h}:{i}')

{/* <text class="timestamp"> {{ currPageformatedTime3(item.created_at) }} </text> */ }
// import { formatedTime3 } from "@/utils/formattedTime.js";
// 当前页面时间戳转日期
// const currPageformatedTime3 = (timestamp) => {
//   return formatedTime3(timestamp)
// }

// 4.传入时间戳、标准时间、时间对象...皆可=>自定义指定格式
// 如：2025-07-07T16:00:00.000Z 或 1722002451000 或 new Date()
export const parseTime = (time, format = '{y}-{m}-{d} {h}:{i}:{s}') => {
    const date = new Date(time);
    const formatObj = {
        y: date.getFullYear(),
        m: date.getMonth() + 1,
        d: date.getDate(),
        h: date.getHours(),
        i: date.getMinutes(),
        s: date.getSeconds(),
        a: date.getDay(), // 星期几，0 表示周日
    };
    const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
        let value = formatObj[key];
        // 补零处理
        if (key !== 'a') {
            value = value.toString().padStart(2, '0');
        } else {
            const weekMap = ['日', '一', '二', '三', '四', '五', '六'];
            value = weekMap[value];
        }
        return value;
    });
    return time_str;
}
// const timestamp = Date.now();
// console.log(parseTime(timestamp)); // 默认格式：2025-06-30 09:05:07
// console.log(parseTime(timestamp, '{m}月{d}日 {h}:{i}')); // 06月30日 09:05

// 标准时间2025-06-30T16:00:00.000Z=>指定格式2025-07-15
// import { formattedTime, parseTime } from '@/utils/formattedTime'
// <el-table-column prop="policyEffectiveDate" label="保单生效日期" min-width="120">
//   <template #default="scope">{{ parseTime(scope.row.policyEffectiveDate, '{y}-{m}-{d}') }} </template>
// </el-table-column>

// 时间对象new Date()
// {{ parseTime(new Date(), '{y}-{m}-{d}') }}

// 5.时间字符串转时间戳工具函数： timeStamp(isoTime) 最终返回的是：一个时间戳（单位：毫秒，13位数字）
// timeStamp全返回数字类型时间戳，如：1720640430000
export const timeStamp = (isoTime) => {
    // 尝试将可能是字符串的数字转为数字类型
    const time = isNaN(isoTime) ? isoTime : Number(isoTime);
    return new Date(time).getTime();
}
// // 1. ✅ 标准ISO格式（推荐）
// console.log(timeStamp('2024-07-11T10:20:30Z'));           // UTC时间
// console.log(timeStamp('2024-07-11T10:20:30+08:00'));      // 指定东八区
// console.log(timeStamp('2024-07-11T10:20:30'));            // 本地时间
// // 2. ✅ 仅日期
// console.log(timeStamp('2024-07-11'));                     // 本地时间00:00:00
// // 3. ✅ 英美常用格式
// console.log(timeStamp('July 11, 2024 10:20:30'));         // 美式
// console.log(timeStamp('11 Jul 2024 10:20:30 GMT'));       // 英式
// // 5. ✅ 时间戳毫秒（数字和字符串类型的时间戳现在都支持传入并且转换了）
// console.log(timeStamp(1720640430000));                    // 毫秒时间戳（数字）
// console.log(timeStamp('1720640430000'), '，数字和字符串类型的时间戳现在都支持传入并且转换了'); // 毫秒时间戳（字符串）
// // 7. ✅ 直接Date对象
// console.log(timeStamp(new Date()));                       // 当前时间戳